# Cargar librerías necesarias
library(plm)
library(readxl)
library(lmtest)
library(sandwich)
library(car)  # Para calcular VIF

# Establecer ruta del archivo Excel
ruta <- "C:/Users/ACER/Desktop/EAFIT/proyecto de grado/Soportes/Regresiones Pyton/Tesis GMM R/Base de datos renombrada final 18.05.2025.xlsx"

# Leer la hoja con los datos logarítmicamente transformados
datos <- read_excel(ruta, sheet = "4. BD Comp Media resumida log")

# Convertir variables categóricas
datos$Año <- as.numeric(datos$Año)
datos$NIT <- as.factor(datos$NIT)
datos$`TAMc` <- as.factor(datos$`TAMc`)

# Filtrar variables relevantes y convertir a panel
panel <- pdata.frame(datos, index = c("NIT", "Año"))

# Definir fórmula del modelo GMM con DT como variable dependiente
form_dt <- DT ~ lag(DT, 1) + MEBITDA + PRO + LIQd + TAMa +
  `ΔAct` + RDC + EA + GIA + LA + RUV + ROA + TAMi + VRI | lag(DT, 2:3)

# Ejecutar modelo GMM (diferencias, dos pasos)
modelo_dt <- pgmm(
  formula = form_dt,
  data = panel,
  effect = "individual",
  model = "twosteps",
  transformation = "d"
)

# Mostrar resumen del modelo
summary(modelo_dt)

# ----- Cálculo del VIF -----
# Usar solo la parte de regresión (sin instrumentos)
modelo_vif <- lm(DT ~ MEBITDA + PRO + LIQd + TAMa + `ΔAct` + 
                   RDC + EA + GIA + LA + RUV + ROA + TAMi + VRI,
                 data = panel)

# Calcular y mostrar VIF
vif(modelo_vif)
